package com.spc.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.spc.dao.HealthInterventionDao;
import com.spc.entity.PageResult;
import com.spc.entity.QueryPageBean;
import com.spc.service.HealthInterventionService;
import com.spc.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;
import java.util.Map;

/*
健康干预相关service实现类
* */
@Service(interfaceClass = HealthInterventionService.class)
@Transactional
public class HealthInterventionServiceImpl implements HealthInterventionService {

    // 自动注入healthInterventionDao
    @Autowired
    private HealthInterventionDao healthInterventionDao;

    /*
    分页展示人群分类表
    * */
    @Override
    public PageResult queryPage(QueryPageBean queryPageBean) {
        // 1.获取queryPageBean中的每个数据
        Integer currentPage = queryPageBean.getCurrentPage();
        Integer pageSize = queryPageBean.getPageSize();
        String queryString = queryPageBean.getQueryString();
        // 2.调用分页助手的startPage方法,将currentPage和pageSize作为参数,会自动对查询的数据进行分页
        PageHelper.startPage(currentPage,pageSize);
        //3.调用healthInterventionDao中的findbyqueryString方法,参数为queryString,得到查询结果为Page封装的map集合
        // (该page类型为分页助手提供)
        Page<Map> pages = healthInterventionDao.findMemberByQueryString(queryString);
        // 4.在通过page对象中的getTotal方法,得到总页数total
        long total = pages.getTotal();
        // 5.在通过page对象中的getresult方法,得到该页的数据rows
        List<Map> rows = pages.getResult();
        // 6.遍历该rows
        for (Map row : rows) {
            // 获取row中的id的值
            int id = (int) row.get("id");
            // 6.2 调用dao中的findCategoryStyleByid,返回String类型的list集合,存储分类种类
            List<String> categoryStyles = healthInterventionDao.findCategoryStyleById(id);
            // 在遍历该list集合,在每个string后面添加一个顿号,便于显示
            for (int i = 0; i <categoryStyles.size() ; i++) {
                // 如果是最后一个,则不添加
                String categoryStyle =  categoryStyles.get(i);
                if (i!=categoryStyles.size()-1){
                   categoryStyle+='、';
                   categoryStyles.set(i,categoryStyle);
                }
            }
            // 6.3 再将该list添加进map中
            row.put("categoryStyles",categoryStyles);
            // 6.4 在获取rows中的birthday
            Date birthday = (Date) row.get("birthday");
            // 6.5 获取当前日期
            Date today = new Date();
            // 6.6 通过gettime方法,得到birthday和today的毫秒值,在计算得到当前年龄
            if (birthday!=null){
                int age = (int) ((today.getTime()-birthday.getTime())/1000/60/60/24/365);
                System.out.println(age);
                // 6.7 在将age放入map中
                row.put("age",age);
            }

        }
        // 6.最后返回一个pageresult对象,并且将total和rows最为形参
        return new PageResult(total,rows);
    }
}
